<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
    
        function fun () {
            console.log('函数方法');
            
        }
    
        // var fun = 10;
        // fun(); //报错：fun is not a function
        // js 中，如果代码报错 那么后面的代码将不再继续执行

        //需求：希望代码出错之后，后面的代码还能继续执行

        //代码的异常处理

        //var str = 'zifuchuan'；语法错误
        //异常处理 是 处理非语法的错误

        /*
        格式：
            try {

            }catch(e) {

            }
        */
        try {
            var fun = 10;
            fun();
            //将可能出现错误 就会进入 catch（e）代码块 e表示 error信息；
            //如果出现错误 就会进入catch(e)代码块e表示error信息；
            //catch(e)代码块可以 处理 出错问题，
            //将可能出错的代码放置到 异常处理代码块 中 可以不影响后面 代码的执行
        } catch(e) {
            console.log(e);            
        }

        console.log('程序没有问题');
        

        /***************自定义异常信息******************/

        try {
            function fun2 (name) {
                if(name == undefined) {
                    //自定义异常信息
                    //通过throw 关键字返回异常信息，返回异常信息之后的代码不再执行， 会执行 catch 中的代码
                    throw {errMag:'未传参数',code:10003};
                }
                console.log(name);
                
            }
            fun2()
        }catch(e) {
            console.log(e.errMag);
            
        }finally {
            //你不管是否出错 都会执行这里的代码， 这里可以释放一些资源 在后端开发使用比较多 （Node.js）

        }
        console.log('fun2 执行之后');
        
    </script>
</body>
</html>